Tengo un proyecto C# simple. Esta es mi cadena de conexión en mi web.config para la base de datos:
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=172.17.0.47;Initial Catalog=DevSystemListe;User ID=web_access;Password=123456" providerName="System.Data.SqlClient" /> </connectionStrings>Ya me aseguré de que esta conexión funciona. Puedo conectarme a mi base de datos desde Visual Studio con esta conexión y también puedo ver las tablas y los datos.
Cuando quiero actualizar mi base de datos con update-database , ocurre este error:
Se produjo un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. El servidor no se encontró o no estaba accesible. Verifique que el nombre de la instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas. (proveedor: SQL Network Interfaces, error: 26 - Error al localizar el servidor/la instancia especificada)
Desinstalé Entity Framework y luego lo instalé de nuevo. Nada ha cambiado.
Finalmente lo descubrí. Tengo un proyecto de sitio web y mi API en mi solución. El problema era que el sitio web estaba configurado como proyecto de inicio. Entonces, el marco de la entidad buscó la cadena de conexión en el web.config del sitio web y no en el web.config de la API. Cambiar el proyecto de inicio a mi API resolvió el problema.
Si desea tener el proyecto del sitio web como proyecto de inicio. Simplemente copie la cadena de conexión en el sitio web web.config .
No obstante gracias por la ayuda de todos.
También para migraciones puede usar OnConfiguring EntityFramework lo verificará de forma predeterminada. Agregue este código a su DbContext.
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"connection_string_here"); }Esta es una respuesta tardía, pero determiné que la causa de este error para mí fue que había intentado eliminar una cadena de conexión web.config adicional sin realizar un cambio necesario en mi clase DbContext .
Tenía una cadena de conexión para mi DefaultConnection y otra generada por EF Migrations.
<connectionStrings> <!-- PRODUCTION--> <add name="DefaultConnection" connectionString="…" providerName="System.Data.SqlClient"/> <add name="Clients.Link.Models.ClientsLinkDB" connectionString="…" providerName="System.Data.SqlClient"/> </connectionStrings> Decidí eliminar la segunda cadena de conexión pensando que EF retrocedería o ya estaba usando mi DefaultConnection .
<connectionStrings> <!-- PRODUCTION--> <add name="DefaultConnection" connectionString="…" providerName="System.Data.SqlClient"/> </connectionStrings> Cuando intenté ejecutar update-database , recibí el mensaje de error informado anteriormente:
Se produjo un error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. El servidor no se encontró o no estaba accesible. Verifique que el nombre de la instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas. (proveedor: SQL Network Interfaces, error: 26 - Error al localizar el servidor/la instancia especificada)
La solución resultó ser extremadamente simple. Simplemente necesitaba indicarle a EF que usara mi cadena de conexión DefaultConnection en lugar de la generada por las migraciones.
Para hacer eso, solo necesita crear o editar el constructor de su DbContext y pasar el nombre de DefaultConnection como una cadena al constructor de la clase base:
public class ClientsLinkDB : DbContext { public ClientsLinkDB() : base("DefaultConnection") { } // The rest of your implementation follows }